知识点名称:传感器编程实践
编号: K12-4
前驱知识点编号:K12-1,K12-2
作者:
讲义内容:
当你设计传感器应用时,请务必遵循下面列出的一些指导方针。这些指导方针对所有使用传感器的开发人员来说都是最佳实践:
- 注销所有的传感器监听器
当传感器所在的活动暂停时,请一定要注销所有的传感器监听器。如果在活动暂停时不注销传感器监听器,传感器就会持续地获取数据并消耗电池电量。下面的代码展示了怎样在onPause()方法内注销监听器:
public class SensorActivity extends Activity implements SensorEventListener {
// 声明SensorManager变量
private SensorManager mSensorManager;
...
@Override
protected void onPause() {
super.onPause();
// 注销传感器事件的监听器
mSensorManager.unregisterListener(this);
}
}
- 不要在模拟器上测试传感器的代码
因为模拟器不能够模拟传感器,所以不能再模拟器上测试与传感器相关的代码,必须在物理设备上测试模拟器代码。但是可以使用传感器模拟器来模拟传感器的输出。
- 不要阻塞onSensorChanged()方法
传感器数据采集速度非常快,这意味着onSensorChanged()方法调用的频率非常高。因此,最佳实践是在这个方法中放尽可能少的代码,从而避免这个方法被阻塞。如果你的应用需要对进行数据筛选或者数据还原,应该在这个方法之外来完成。
- 避免使用被废弃的传感器类型
有几个方法和常量已经被废弃了。特别是TYPE_ORIENTATION传感器已经被废弃了。要获取方向数据,你应该使用SensorManager类的getOrientation()方法。同样的,TYPE_TEMPERATURE传感器也被废弃了。在运行Android 4.0及以上的设备上,你应该使用TYPE_AMBIENT_TEMPERATURE传感器。
- 谨慎选择传感器采样频率
当你使用registerListener()方法注册传感器时,你应当为你的应用选择一个合适的采样频率。传感器可以以很高地频率采集数据,如果没有需要而设置过高地采样频率将会浪费系统资源和电池电量。